home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-06-26 | 1.3 KB | 56 lines |
- 10 CLS
- 20 KEY OFF
- 30 PRINT "NUMERIC BASE CONVERSION"
- 40 PRINT
- 50 N$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- 60 REM -- VARIABLE 'M' IS THE HIGHEST
- 70 REM -- BASE YOU MAY CONVERT FROM / TO
- 80 M=LEN(N$)
- 90 PRINT "FROM BASE (0 TO END) ";
- 100 INPUT B1
- 110 REM -- END PROGRAM?
- 120 IF B1=0 THEN 550
- 130 REM -- TEST FOR VALID INPUT BASE
- 140 IF B1>1 THEN 170
- 150 PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN. "
- 160 GOTO 90
- 170 IF B1>M THEN 150
- 180 PRINT "TO BASE ";
- 190 INPUT B2
- 200 IF B2=0 THEN 90
- 210 REM -- TEST FOR VALID OUTPUT BASE
- 220 IF B2>1 THEN 250
- 230 PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN."
- 240 GOTO 180
- 250 IF B2>M THEN 230
- 260 PRINT "VALUE ";
- 270 INPUT V$
- 280 IF V$="0" THEN 180
- 290 REM -- FIRST, CONVERT INPUT VALUE TO BASE 10
- 300 L=LEN(V$)
- 310 D=0:BAD=0
- 320 FOR I=1 TO L
- 330 FOR J=1 TO B1
- 340 IF MID$(V$,I,1)>MID$(N$,B1,1) THEN BAD=-1
- 350 IF MID$(N$,J,1)<>MID$(V$,I,1) THEN 370
- 360 D=D+INT((J-1)*(B1^(L-I))+0.5)
- 370 NEXT J
- 380 NEXT I
- 390 IF BAD THEN 510
- 400 REM -- NOW CONVERT BASE 10 VALUE TO
- 410 REM -- DESIRED OUTPUT
- 420 O$=""
- 430 X=INT(((D/B2)-INT(D/B2))*B2+1.5)
- 440 O$=MID$(N$,X,1)+O$
- 450 D=INT(D/B2)
- 460 IF D>0 THEN 430
- 470 REM -- OUTPUT THE RESULT
- 480 PRINT V$;" BASE";B1;"IS ";O$;" BASE";B2
- 490 REM -- LOOP BACK TO ENTER ANOTHER VALUE
- 500 GOTO 260
- 510 PRINT "INVALID ENTRY:"
- 520 PRINT "THERE IS NO SUCH NUMBER '"V$"' (SIC) IN BASE"B1
- 530 PRINT
- 540 GOTO 90
- 550 END
-